package com.kb.erp.controller;

import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.property.TextAlignment;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class PdfPrinter {

    public static void createAndSavePdf() throws Exception {
        // 使用FileOutputStream来保存PDF内容
        FileOutputStream fileOutputStream = new FileOutputStream(new File("output.pdf"));

        // 1. 创建PDF写入对象
        PdfWriter pdfWriter = new PdfWriter(fileOutputStream);

        // 2. 创建PDF文档对象
        PdfDocument pdfDocument = new PdfDocument(pdfWriter);

        // 3. 创建内容文档对象
        Document document = new Document(pdfDocument);

        // 设置字体，解决中文显示问题
        PdfFont font = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", true);

        // 4. 添加标题
        document.add(new Paragraph("生产领料单")
                .setFont(font)
                .setBold()
                .setFontSize(16)
                .setTextAlignment(TextAlignment.CENTER));

        // 5. 添加日期、领料单号和领料部门
        Paragraph headingInfo = new Paragraph("2024年12月31日    领料单号: 128LL202412106888    领料部门: 制造部 - 化金")
                .setFont(font)
                .setTextAlignment(TextAlignment.LEFT)
                .setFontSize(12);
        document.add(headingInfo);

        // 6. 添加物料类别
        Paragraph materialCategory = new Paragraph("物料类别：化学品")
                .setFont(font)
                .setTextAlignment(TextAlignment.LEFT)
                .setFontSize(12);
        document.add(materialCategory);

        // 7. 添加空行
        document.add(new Paragraph("\n"));

        // 8. 表格列宽度
        float[] columnWidths = {1, 3, 2, 2, 2, 2, 3}; // 增加了备注列
        Table table = new Table(columnWidths);
        table.setWidthPercent(100);

        // 9. 表头
        table.addHeaderCell(new Cell().add(new Paragraph("物料编码").setFont(font)));
        table.addHeaderCell(new Cell().add(new Paragraph("物料名称").setFont(font)));
        table.addHeaderCell(new Cell().add(new Paragraph("规格").setFont(font)));
        table.addHeaderCell(new Cell().add(new Paragraph("单位").setFont(font)));
        table.addHeaderCell(new Cell().add(new Paragraph("现场库存").setFont(font)));
        table.addHeaderCell(new Cell().add(new Paragraph("申请数量").setFont(font)));
        table.addHeaderCell(new Cell().add(new Paragraph("备注").setFont(font))); // 新增“备注”列

        // 10. 表格内容
        table.addCell(new Cell().add(new Paragraph("A8010003").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("酸性清洗剂 SE-250 20L/桶").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("升").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("80.000").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("60.000").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("").setFont(font))); // 备注列为空

        table.addCell(new Cell().add(new Paragraph("A8010003").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("酸性清洗剂 SE-250 20L/桶").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("升").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("80.000").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("20.000").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("").setFont(font))); // 备注列为空

        table.addCell(new Cell().add(new Paragraph("A8010001").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("过硫酸钠99% 工业级 25KG/包").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("千克").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("75.000").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("75.000").setFont(font)));
        table.addCell(new Cell().add(new Paragraph("").setFont(font))); // 备注列为空

        // 11. 输出表格
        document.add(table);

        // 12. 添加空行
        document.add(new Paragraph("\n"));

        // 13. 底部区域
        Paragraph footerInfo = new Paragraph("制单：张伟     物料审批：刘芬     发料：___________     接收：___________")
                .setFont(font)
                .setTextAlignment(TextAlignment.LEFT)
                .setFontSize(12);
        document.add(footerInfo);
        // 16. 关闭文档
        document.close();




    }

    public static void main(String[] args) {
        try {
            createAndSavePdf();
            System.out.println("PDF已成功保存为 output.pdf");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
